const app = getApp();
Page({
  /**
   * 页面的初始数据
   */
  data: {
    openid: "",
    loginstate: "0",
    userEntity: null,
    terminal: "",
    osVersion: "",
    canIUse: wx.canIUse('button.open-type.getPhoneNumber'),
    phoneNumber: "",
    userAccount: "",
    canIUseGetUserProfile: false,
    showModal: false,//定义登录弹窗
  },
  //在页面加载的时候，判断缓存中是否有内容，如果有，存入到对应的字段里
  onLoad: function () {
    if (wx.getUserProfile) {
      this.setData({
        canIUseGetUserProfile: true
      })
    }
    wx.hideHomeButton();
    // 获取手机号
    try {
      // var value = wx.getStorageSync('phoneNumber')
      // console.log("支持用户调用", wx.canIUse('wx.getUserProfile'))
      var userAccount = wx.getStorageSync('userAccount')
      if (userAccount && userAccount!=="微信用户") { // 说明已登录 跳转 页面
        console.log("获取用户id：" + userAccount)
        wx.setStorageSync('userAccount', userAccount)
        wx.redirectTo({
          url: '/pages/home/home'
        })
        return
      } else {// 未登录 显示 微信授权页面
        console.log("未登录")
        this.setData({
          showModal: false
        })
      }
    } catch (e) {

    }
    // 解决第一次获取手机号失败问题 解决与getUserProfile冲突问题
    // wx.login({
    //   success: res => {
    //     if (res.code) {
    //       console.log("code->", res.code)
    //     }
    //   }
    // })
  },
  getUserProfile: function (e) {
    wx.getUserProfile({
      desc: '展示用户信息',
      success: res => {
        let user = res.userInfo;
        console.log("当前用户信息",user)
        wx.setStorageSync('userAccount', user.nickName)
        wx.redirectTo({
          url: '/pages/home/home'
        })
        // 没有获取手机号权限暂时弃用
        // that.showDialogBtn();//调用一键获取手机号弹窗
      },
      fall: res => {
        console.log('失败', res)
      }
    })
  },

  // 显示一键获取手机号弹窗
  showDialogBtn: function () {
    this.setData({
      showModal: true//修改弹窗状态为true，即显示
    })
  },
  // 隐藏一键获取手机号弹窗
  hideModal: function () {
    this.setData({
      showModal: false//修改弹窗状态为false,即隐藏
    });
  },
  onshow: function () {
    this.onLoad();
  },
  //绑定手机
  getPhoneNumber: function (e) {
    // 用户拒绝授权,此处测试账号可用，正式账号要钱
    if (e.detail.errMsg == "getPhoneNumber:fail user deny" || e.detail.errMsg == "getPhoneNumber:fail no permission") {
      wx.showToast({
        icon: "none",
        title: '请允许获取手机号，否则功能不可用！',
      })
      return;
    }
    /// 用户允许授权
    console.log("iv->", e.detail.iv); //包括敏感数据在内的完整用户信息的加密数据,需要解密
    console.log("encryptedData->", e.detail.encryptedData); //加密算法的初始向量，解密需要用到
    /// 获取手机号
    // 1.获取临时登录凭证code
    wx.login({
      success: res => {
        if (res.code) {
          this.code = res.code;
          console.log("code->", res.code)
          this.getSessionKey(res.code, e.detail.encryptedData, e.detail.iv);
        }
      }
    })
  },
  // 2.访问登录凭证校验接口获取session_key（后续改成后台实现）
  getSessionKey: function (js_code, encryptedData, iv) {
    wx.request({
      url: app.globalData.getSessionKeyUrl,
      data: {
        'jscode': js_code,
        'sign': 'sign'
      },
      method: 'GET',
      header: {
        'content-type': 'application/json'
      }, // 设置请求的 header
      success: function (data) {
        console.log("session_key->", data.data.session_key)
        if (data.data == undefined) {
          wx.showToast({
            icon: "none",
            title: 'session_key获取失败，请重新登录！',
          })
          return
        }
        // 3. 解密获取手机号
        wx.request({
          url: app.globalData.getPhoneUrl,
          data: {
            'encryptedData': encodeURIComponent(encryptedData),//需要进行编码
            'iv': iv,
            'sessionKey': data.data.session_key,
            'sign': 'sign',
          },
          method: 'GET',
          header: {
            'content-type': 'application/json'
          }, // 设置请求的 header
          success: function (data2) {
            console.log(data2.data.phoneNumber)
            if (data2.statusCode == 200) {
              if (data2.data.phoneNumber == undefined) {
                // 获取手机号失败 跳转到 常规 用户登录页面（通过webview）
                wx.redirectTo({
                  url: '/pages/login/index'
                })
                return
              }
              // 存储数据到缓存
              wx.setStorage({
                key: "phoneNumber",
                data: data2.data.phoneNumber
              })
              // 4.跳转web-view页面
              wx.redirectTo({
                url: '/pages/home/home?param=' + data2.data.phoneNumber
              }) // 4
            }
          },
          fail: function (err) {
            console.log(err);
            wx.showToast({
              icon: "none",
              title: '获获取手机号失败，请重试！',
            })
          }
        })// 3
      },
      fail: function (err) {
        console.log(err);
        wx.showToast({
          icon: "none",
          title: 'session_key获取失败，请重新登录！',
        })
        return
      }
    })
  }
})